package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloAlumno;
import com.ipartek.formacion.gestformwww.modelo.ModeloSMS;
import com.ipartek.formacion.gestformwww.modelo.beans.Alumno;
import com.ipartek.formacion.gestformwww.modelo.beans.PlantillaSMS;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author David & Borja
 */
public class VisualizarEnviarSMSAccion implements Accion {

    private AccionFactory factoria;
    private final String visualizarcursos = "visualizar-curso-accion";

    /**
     * Ejecuta la accion de visualizar la página para enviar SMSs
     * @param servlet
     * @param request
     * @param response
     * @return
     */
    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        ModeloAlumno modelo = (ModeloAlumno) servlet.getServletContext().getAttribute("ModeloAlumno");
        ModeloSMS modelosms = (ModeloSMS) servlet.getServletContext().getAttribute("ModeloSMS");
        HttpSession sesion = request.getSession();
        AccionRouter router = null;
        AccionServlet as=(AccionServlet) servlet;
        ArrayList<Alumno> alumnos = new ArrayList<Alumno>();
        ArrayList<PlantillaSMS> plantillas = new ArrayList<PlantillaSMS>();
        int idCurso;
        int idAlumno;

        if (sesion.getAttribute("usuario") != null && request.getMethod().equalsIgnoreCase("POST")) {

            idCurso = Integer.parseInt(request.getParameter("idCurso"));

            if (request.getParameter("listaIdAlumno") == null) {
                try {
                    idAlumno = Integer.parseInt(request.getParameter("idAlumno"));
                } catch (NumberFormatException ex) {
                    idAlumno = -1;
                }
                if (idAlumno != -1) {
                    try {
                        Alumno alumno = modelo.visualizarAlumno(idAlumno, idCurso);
                        alumnos.add(alumno);
                    } catch (GestorFormacionExcepcion ex) {
                        sesion.setAttribute("excepciones", ex.getMessage());
                        Logger.getLogger(VisualizarEnviarSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            } else {
                try {
                    for (String idStr : ((String[]) request.getParameterValues("listaIdAlumno"))) {
                        Alumno alumno = modelo.visualizarAlumno(Integer.parseInt(idStr), idCurso);
                        alumnos.add(alumno);
                    }
                } catch (GestorFormacionExcepcion ex) {
                    sesion.setAttribute("excepciones", ex.getMessage());
                    Logger.getLogger(VisualizarEnviarSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
                } catch (NumberFormatException ex) {
                    alumnos.clear();
                }
            }
            try {
                plantillas = modelosms.listarPlantillasSMS();
            } catch (GestorFormacionExcepcion ex) {
                sesion.setAttribute("excepciones", ex.getMessage());
                Logger.getLogger(VisualizarEnviarSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
            }
            request.setAttribute("listaalumnos", alumnos);
            request.setAttribute("listaplantillas", plantillas);
            request.setAttribute("contenido", "visualizar-enviar-sms"); //Poner en properties con su jsp.

            router = new AccionRouter("principal");

        } else {
            try {
                router=as.getFactory().getAction(as.getNombreClaseRecurso(visualizarcursos),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(VisualizarEnviarSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(VisualizarEnviarSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(VisualizarEnviarSMSAccion.class.getName()).log(Level.SEVERE, null, ex);
            }
          
        }
        return router;
    }

   
}
